// pages/product/product.js
// 上拉加载
// 1.监听用户上滑页面 当滚动条或当前页面触底 开始加载下一页的数据
// 2.判断当前数据源还有没有下一页的数据
// page 当前页的页码
// pageSize 每页显示多少条数据
// total 当前数据源的数据总条数
// nextpage 3
// prepage 1
// finalpage 4
//Math.cell向上取整（ 总数据条数/当前页面数据）=总页数
// 2.1获取到总页数 判断当前的页数是否大于等于总页数如果是最后一页则没有下一页了
// 2.2当前页小于总页数 说明还有下一页的数据
// 3.没有下一页给用户一个提示
// 4.有下一页数据继续加载

// 下拉刷新
// 1.触发下拉刷新事件
//   在页面的配置文件中开启下拉刷新
// 页面的json文件中开启两个选项
// enablePullDownRefresh开启下拉刷新
// backgroundTextStyle
// 2.在对应的函数中重新获取页面的数据源 重置数据源数组
// 3.重置当前的页数 page
// 4.重新发送请求获取数据
// 5.数据请求完毕后手动关闭下拉刷新的效果


// 引入网络请求工具
const request = require('../../utils/promise.js')
Page({
  data: {
    // 产品分类的ID
    categoryID: '',
    // 产品列表数据
    productList: [],
    // 控制底部弹出框的显示与隐藏 布尔类型
    show: false,
    // 当前被点击的产品对象
    product: {},
    //当前的页数
    page: 1,
    //每页展示数据的条数
    pageSize: 6,
    //数据总条数
    total: 0,
  },
  onLoad: function (options) {
    // console.log(JSON.parse(options.category).id);
    let category = JSON.parse(options.category)
    // 动态的改变当前页面的标题
    wx.setNavigationBarTitle({
      title: category.name
    })
    // 获取到上一级页面传递过来的分类ID 给data中的变量进行赋值
    this.setData({
      categoryID: category.id
    })
    // 自动获取产品列表数据
    this.getProductDataByCategoryId()
  },
  // 根据分类id获取产品列表数据
  getProductDataByCategoryId() {
    let that = this
    // 设置参数
    let data = {
      page: this.data.page,
      pageSize: this.data.pageSize,
      productCategoryId: this.data.categoryID
    }
    // 发送网络请求
    request.GET('/product/pageQuery', data).then(res => {
      // console.log(res);
      that.setData({
        // 当前页的数据源
        // 根据分页 重新设置数据源
        productList: [...this.data.productList, ...res.data.data.list],
        // 数据源的数据总条数
        total: res.data.data.total
      })
      // 在网络请求加载完毕后 收到关闭下拉刷新的动画
      wx.stopPullDownRefresh()
    })
  },
  // 点击当前的产品列表 弹出产品的详情
  productDetailClick(product) {
    // 弹出底部的actionsheet
    this.setData({
      show: true,
      product: product.target.dataset.product
    })
    // console.log(product.target.dataset.product);
  },
  // 关闭底部弹出的模态框
  onClose() {
    this.setData({
      show: false
    });
  },
  change(event) {
    console.log(event.detail);
  },

  // 监听用户上拉加载
  onReachBottom() {
    // console.log('用户下拉触底');
    // 1.获取当前的总页数
    let totalPage = Math.ceil(this.data.total / this.data.pageSize)
    console.log(totalPage);
    // 2.判断当前页数是否大于等于或小于总页数
    if (this.data.page >= totalPage) {
      //2.1大于等于 提示用户没有下一页的数据了
      wx.showToast({
        title: '没有更多数据了',
      })
    } else {
      // 2.2小于总页数继续加载下一页
      // 1.让当前页数自增一
      this.data.page++
      // 2.重新获取网络数据
      this.getProductDataByCategoryId()
      // 重新设置数据源
    }
  },
  // 监听下拉刷新操作
  onPullDownRefresh() {
    // console.log('下拉刷新');
    // 重置页面的数据源
    this.setData({
      productList: []
    })
    // 重置当前的页数
    this.data.page = 1
    // 重新发送网络数据
    this.getProductDataByCategoryId()

  }
})